package tp.pr5.mv.command;

import tp.pr5.mv.CPU;
import tp.pr5.mv.Memory;
import tp.pr5.mv.OperandStack;
import tp.pr5.mv.ProgramCounter;

public class CPUSH extends Command { // Esta clase dispone de un atributo donde guardaremos su parámetro

	private int value;
	
	public CPUSH () { // Constructor por defecto
		this.value = 0;
		
	}
	public CPUSH (int par) { // Constructor con un parámetro
		this.value = par;
		
	}
	
	public boolean executeCommand(Memory mem, OperandStack stack, ProgramCounter pc, CPU cpu) {
	
		stack.push(value); //Realizamos el push con el atributo de la clase
		
		return true;
		
	}

	public Command parse(String line) { // Parseo similar al de la clase InstructionParser

		line = line.trim();
		String[] words = line.split(" +");

		if (words[0].equalsIgnoreCase("push") && words.length == 2) {

			int param = Integer.parseInt(words[1]);
			return new CPUSH(param);
		}

		else
			return null;

	}
	
	
}
